package com.zqh.template.model;


import lombok.*;

import java.util.List;

/**
 * 模板生成器文件总配置类（核心配置类）
 * 作用：统筹管理多个文件/目录的生成配置，包含文件路径、过滤规则等配置信息
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class TemplateMakerFileConfig {
    /**
     * 文件配置列表（核心配置项）
     * 说明：每个配置项对应一个文件/目录的处理规则
     */
    private List<FileInfoConfig> files;

    private FileGroupConfig fileGroupConfig;


    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    @Builder
    public static class FileGroupConfig {
        private String condition;
        private String groupKey;
        private String groupName;

    }


    /**
     * 单个文件配置信息（嵌套配置类）
     * 功能：描述单个文件/目录的具体配置参数
     */
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    @Builder
    public static class FileInfoConfig {
        /**
         * 文件输入路径（关键参数）
         * 要求：支持绝对路径和相对路径
         * 注意：如果是目录则会递归处理
         */
        private String path;

        private String condition;

        /**
         * 文件过滤配置列表（可选配置）
         * 作用：定义文件过滤规则集合，满足任一规则的文件将被保留
         * 规则示例：
         * - 过滤文件名包含"test"的文件
         * - 过滤后缀名为.java的文件
         */
        private List<FileFilterConfig> filterConfigList;
    }




}
